package com.caiwm.chatroom.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * <pre>
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃  神兽保佑
 * 　　　　┃　　　┃  代码无bug
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 * </pre>
 *
 * @author shiqla
 * @Desc 聊天程序服务端
 * @Date 2019/1/10/010
 */
public class ChatServer {

    private int port = 10241;

    private List<ClientSocket> list;

    private ServerSocket serverSocket;

    private ExecutorService executorService;

    public ChatServer() {
        this.list = new ArrayList<ClientSocket>();

        executorService = Executors.newFixedThreadPool(100);
        try {
            serverSocket = new ServerSocket(this.port);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void start() throws Exception {

        System.out.println("聊天室服务器启动完成，等待客户端连接...");
        while (true) {
            //监听客户端连接
            Socket socket = this.serverSocket.accept();
            ClientSocket clientSocket = new ClientSocket(socket);
            executorService.execute(new ClientExecute(clientSocket,list));
        }

    }

    public static void main(String[] args) {
        ChatServer chatServer = new ChatServer();
        try {
            chatServer.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
